﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;

namespace Botonet
{
    public partial class Reporte_grupal : System.Web.UI.Page
    {
        private cDB DBclass = new cDB();
        
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["Tipo"] == null)
            {
                Response.Redirect("index.aspx", false);
            }
              
            if (!IsPostBack)
            {
                //if (Session["Tipo"].ToString() == "user")
                //{
                //    ddl_grupos.Visible = false;
                //} 
                ListarGrupos();
            }
            
        }
        private bool ListarGrupos()
        {
            ddl_grupos.Items.Clear();
            string a= Session["Email"].ToString();
            string strQuery = "SELECT Grupos.* FROM Grupos LEFT JOIN Usuarios_Grupos ON Grupos.id_Grupos = Usuarios_Grupos.Grupo_Usuario ";
            strQuery += " WHERE ";
            strQuery += "Usuarios_Grupos.Email_Usuario = '" + a + "' ";
            ListItem itemGrupo;
            if (DBclass.execQuery(strQuery, "Grupos"))
            {
                itemGrupo = new ListItem("(Grupos)", "0");
                ddl_grupos.Items.Add(itemGrupo);
                Application["Grupos"] = DBclass.DS.Tables["Grupos"];

                foreach (System.Data.DataRow FilaGrupo in DBclass.DS.Tables["Grupos"].Rows)
                {
                    itemGrupo = new ListItem(FilaGrupo["Nombre_Grupos"].ToString(), FilaGrupo["id_Grupos"].ToString());
                    
                    ddl_grupos.Items.Add(itemGrupo);
                }
                return true;
            }
            return false;
        }

        protected void btnReporte_Grupal_Click(object sender, EventArgs e)
        {
            int i, intPuntos;
            string strCalificado, strTipoEval, strNombre;
            DateTime Fecha;
            System.Web.UI.DataVisualization.Charting.Series serie = new System.Web.UI.DataVisualization.Charting.Series();

            if ((ddl_grupos.SelectedItem.Value != "0")
                && (idDesde.Text != "")
                && (idHasta.Text != "")
                && ((DateTime.Parse(idDesde.Text)) < (DateTime.Parse(idHasta.Text))))
            {

                string strQuery = "SELECT id_TipoEvaluacion, Email_Calificado, Fecha, Nombre, Apellido, ";
                strQuery += " AVG(Calificacion) AS Puntos";
                strQuery += " FROM Evaluaciones";
                strQuery += " INNER JOIN Usuarios ON Email_Calificado = Email";
                strQuery += " WHERE (id_Grupo = " + ddl_grupos.SelectedItem.Value + ")";
                strQuery += " AND (Fecha BETWEEN '" + idDesde.Text + "' AND '" + idHasta.Text + "')";
                strQuery += " GROUP BY id_TipoEvaluacion, Email_Calificado , Fecha, Nombre, Apellido";
                strQuery += " ORDER BY id_TipoEvaluacion, Email_Calificado ,Fecha";

                if (DBclass.execQuery(strQuery, "Evaluaciones"))
                {
                    GrafoGrupalProductividad.Series.Clear();
                    GrafoGrupalSocial.Series.Clear();
                    for (i = 0; i < DBclass.DS.Tables["Evaluaciones"].Rows.Count; i++)
                    {
                        strTipoEval = DBclass.DS.Tables["Evaluaciones"].Rows[i]["id_TipoEvaluacion"].ToString();
                        strCalificado = DBclass.DS.Tables["Evaluaciones"].Rows[i]["Email_Calificado"].ToString();
                        strNombre = DBclass.DS.Tables["Evaluaciones"].Rows[i]["Nombre"].ToString() + " " + DBclass.DS.Tables["Evaluaciones"].Rows[i]["Apellido"].ToString();
                        intPuntos = int.Parse(DBclass.DS.Tables["Evaluaciones"].Rows[i]["Puntos"].ToString());
                        Fecha = (DateTime)DBclass.DS.Tables["Evaluaciones"].Rows[i]["Fecha"];

                        if (DBclass.DS.Tables["Evaluaciones"].Rows[i]["id_TipoEvaluacion"].ToString() == "1")
                        {
                            GrafoGrupalProductividad.Visible = true;
                            if ((i == 0) || (DBclass.DS.Tables["Evaluaciones"].Rows[i - 1]["Email_Calificado"].ToString() != strCalificado))
                            {
                                GrafoGrupalProductividad.Series.Add(strNombre);
                                GrafoGrupalProductividad.Legends.Add(strNombre);
                                GrafoGrupalProductividad.Series[strNombre].ChartType = System.Web.UI.DataVisualization.Charting.SeriesChartType.Line;
                                GrafoGrupalProductividad.Series[strNombre].XAxisType = System.Web.UI.DataVisualization.Charting.AxisType.Primary;
                                GrafoGrupalProductividad.Series[strNombre].XValueType = System.Web.UI.DataVisualization.Charting.ChartValueType.DateTime;
                                GrafoGrupalProductividad.Series[strNombre].YAxisType = System.Web.UI.DataVisualization.Charting.AxisType.Primary;
                                GrafoGrupalProductividad.Series[strNombre].YValueType = System.Web.UI.DataVisualization.Charting.ChartValueType.Int32;
                            }

                            GrafoGrupalProductividad.Series[strNombre].Points.AddXY(Fecha, intPuntos);
                        }
                        else if (DBclass.DS.Tables["Evaluaciones"].Rows[i]["id_TipoEvaluacion"].ToString() == "2")
                        {
                            GrafoGrupalSocial.Visible = true;
                            if ((i == 0)
                                || (DBclass.DS.Tables["Evaluaciones"].Rows[i - 1]["Email_Calificado"].ToString() != strCalificado)
                                || (DBclass.DS.Tables["Evaluaciones"].Rows[i - 1]["id_TipoEvaluacion"].ToString() != DBclass.DS.Tables["Evaluaciones"].Rows[i]["id_TipoEvaluacion"].ToString()))
                            {

                                GrafoGrupalSocial.Series.Add(strNombre);
                                GrafoGrupalSocial.Legends.Add(strNombre);
                                GrafoGrupalSocial.Series[strNombre].ChartType = System.Web.UI.DataVisualization.Charting.SeriesChartType.Line;
                                GrafoGrupalSocial.Series[strNombre].XAxisType = System.Web.UI.DataVisualization.Charting.AxisType.Primary;
                                GrafoGrupalSocial.Series[strNombre].XValueType = System.Web.UI.DataVisualization.Charting.ChartValueType.DateTime;
                                GrafoGrupalSocial.Series[strNombre].YAxisType = System.Web.UI.DataVisualization.Charting.AxisType.Primary;
                                GrafoGrupalSocial.Series[strNombre].YValueType = System.Web.UI.DataVisualization.Charting.ChartValueType.Int32;
                            }

                            GrafoGrupalSocial.Series[strNombre].Points.AddXY(Fecha, intPuntos);
                        }
                    }
                }
            }
            else if ((idDesde.Text == "") || (idHasta.Text == ""))
            {
                Page.ClientScript.RegisterStartupScript(this.GetType(), "dialog", "<script type=\"text/javascript\">msg='<div id=\"txtMensaje\"> Debe seleccionar un rango de fecha</div>';</script> ");
            }
        }
    }
}